/**
 * @class Prototype.Accueil
 */ 
var Accueil = Class.create(AjaxClient,
{
  /**
   * initialize
   */
  initialize: function()
  {
    this.setServer('accueil.ajaxsrv.php');

    $('div_infos_compte', 'div_change_pwd').invoke('hide');
    
    this.wndCompte = new Window( { maximizable : false
                                 , title       : "Création d'un nouveau compte"
                                 }
                               );
    this.wndCompte.setContent('div_infos_compte', true, false);

    this.wndPwd = new Window( { maximizable : false
                              , title       : "Changement du mot de passe"
                              }
                            );
    this.wndPwd.setContent('div_change_pwd', true, false);
  
    this.registerCallbacks();
    
    this.ajaxUpdate('comptes', { action: 'load' });
  },
  
  /**
   * registerCallbacks
   */
  registerCallbacks: function()
  {
    Event.observe('btn_creer_compte', 'click', function(event)
    {
      this.showWndCompte('new_compte', '', '', '', 'Créer');
      Event.stop(event);
    }.bind(this));
    
    Event.observe('btn_change_pwd', 'click', function(event)
    {
      this.showWndPwd();
      Event.stop(event);
    }.bind(this));
    
    // SUBMIT NEW COMPTE
    Event.observe('btn_new_compte', 'click', function(event)
    {
      var action = $F('action');
      var params = { action    : action
                   , numero    : $F('numero')
                   , libelle   : $F('libelle')
                   , id_compte : $F('id_compte') 
                   };
      switch(action)
      {
      case 'new_compte' :
        this.ajaxUpdate('comptes', params, Insertion.Bottom);
        break;
      case 'update' :
        var id_row = 'row_compte_' + $F('id_compte'); 
        this.ajaxUpdate(id_row, params);
        break;
      }
      this.hideWndCompte();
      Event.stop(event);
    }.bind(this));

   // SUBMIT NEW COMPTE
    Event.observe('btn_pwd', 'click', function(event)
    {
      this.ajaxRequest( { action : 'change_pwd', pwd : $F('pwd') } );
      this.hideWndPwd();
      Event.stop(event);
    }.bind(this));
  },
 
  /**
   * showWndCompte
   */
  showWndCompte: function(action, numero, libelle, id_compte, btnLabel)
  {
    Form.Element.setValue('action',         action);
    Form.Element.setValue('numero',         numero);
    Form.Element.setValue('libelle',        libelle);
    Form.Element.setValue('id_compte',      id_compte);
    Form.Element.setValue('btn_new_compte', btnLabel);
    this.wndCompte.showCenter(true);
    Form.Element.focus('numero');
  },
  
  /**
   * hideWndCompte
   */
  hideWndCompte: function()
  {
    this.wndCompte.hide();
  },
  
  /**
   * showWndPwd
   */
  showWndPwd: function()
  {
    Form.Element.setValue('pwd', '');
    this.wndPwd.showCenter(true);
    Form.Element.focus('pwd');
  },
  
  /**
   * hideWndPwd
   */
  hideWndPwd: function()
  {
    this.wndPwd.hide();
  },
  
  /**
   * look_compte
   */     
  look_compte: function(id, num, libelle)
  {
    var id_row      = 'row_compte_' + id;
    var id_btn_del  = 'btn_del_'    + id; 
    var id_btn_edit = 'btn_edit_'   + id; 

    new Event.Over(id_row);

    Event.observe(id_btn_del, 'click', function(event)
    {
      var msg = 'Etes vous sûr de supprimer le compte n°' + num + ' (' + libelle + ')?'
      if (confirm(msg))
      {
        this.ajaxRequest( { action : 'delete', id: id } );
      }
      Event.stop(event);
    }.bind(this));

    Event.observe(id_btn_edit, 'click', function(event)
    {
      this.showWndCompte('update', num, libelle, id, 'Mettre à jour');
      Event.stop(event);
    }.bind(this));
  },
  
  /**
   * set_patrimoine
   */
  set_patrimoine: function(patrimoine)
  {
    $('patrimoine').replace(patrimoine);
  },

  /**
   * delete_compte
   */
  delete_compte: function(id)
  {
    $('row_compte_' + id).remove();
  }     

});

Event.observe(window, "load", function(event)
{
  window.Accueil = new Accueil();
});
